package cn.slipi.admin.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import cn.slipi.admin.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 生产者项目（服务提供者）
 * </p>
 *
 * @author lee
 * @since 2020-12-01
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("pdr_api")
public class PdrApi extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 所属项目id
     */
    private Integer pdrProjectId;

    /**
     * 接口名称
     */
    private String name;

    /**
     * 接口描述
     */
    private String description;

    /**
     * 接口对外名称
     */
    private String code;

    /**
     * 接口请求路径
     */
    private String path;

    /**
     * 接口请求类型（GET,PUT,POST,DELETE）
     */
    private String queryType;

    /**
     * 负载地址（单节点则为实际地址）
     */
    private String loadIp;

    /**
     * 负载节点配置（{"strategy":"ROUND","retryTime":"1","data":[{"server":"127.0.0.1","weight":"1"}]}）
     */
    private String loadBalance;

    /**
     * 熔断降级配置（{"commandKey":"","errorThresholdPercentage":"50","groupKey":"","requestVolumeThreshold":"20","sleepWindowInMilliseconds":"5000","timeoutInMilliseconds":"1000"}）
     */
    private String hystrixParam;

    /**
     * 每秒请求数
     */
    private Integer permitsPerSecond;

    /**
     * 灰度发布
     */
    private String grayRelease;

    /**
     * 发布快照
     */
    private String publishSnap;

    /**
     * 接口协议（HTTP,WEBSERVICE）
     */
    private String protocol;

    /**
     * 传输协议（JSON,XML）
     */
    private String translateProtocol;

    /**
     * ip 黑名单
     */
    private String blackList;

    /**
     * 是否启用接口（0：关停，1：启用）
     */
    private Integer enable;

    /**
     * 入参
     */
    private String inParam;

    /**
     * 出参
     */
    private String outParam;

    /**
     * 授权出参
     */
    private String globalGrantParam;

    /**
     * 发布网关时间 publish_time
     */
    private Long publishTime;


    /**
     * 关键信息更新时间 key_update_time
     */
    private Long keyUpdateTime;


}
